package org.springframework.archiesean;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 测试bean
 *
 * @author ArchieSean
 * @create 2023/7/27
 */
public class TestBean {
	public static void main(String[] args) {
		//ApplicationContext是容器的高级接口，BeanFactory是容器的顶级接口
		//Spring应用上下文，官方称之为： IOC容器
		/**
		 * IOC容器创建管理Bean对象，Spring Bean是有生命周期的
		 * 构造器、初始化方法执行，bena后置处理器的before/after方法： AbstractApplicationContext#refresh#finishBeanFactoryInitialization
		 * Bean工厂后置处理器初始化：执行： AbstractApplicationContext#invokeBeanFactoryPostProcessors
		 * Bean后置处理器初始化，执行：AbstractApplicationContext#registerBeanPostProcessors
		 */
		ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
		MyBean myBean = context.getBean(MyBean.class);
		System.out.println(myBean.print());
	}
}
